#include "networkmanager.h"
#include <QNetworkInterface>

NetworkManager::NetworkManager() {}

QString NetworkManager::getLocalIPv4()
{
    for (const QNetworkInterface& netInterface : QNetworkInterface::allInterfaces())
    {
        // IsUp是否启用 IsRunning是否运行 IsLoopBack是否回环网卡
        if (!(netInterface.flags() & QNetworkInterface::IsUp) ||
            !(netInterface.flags() & QNetworkInterface::IsRunning) ||
            (netInterface.flags() & QNetworkInterface::IsLoopBack))
        {
            continue;
        }

        for (const QNetworkAddressEntry &entry : netInterface.addressEntries())
        {
            QHostAddress ip = entry.ip();
            // 只要 IPv4 地址，并且是内网地址
            if (ip.protocol() == QAbstractSocket::IPv4Protocol)
            {
                // 返回找到的第一个内网 IPv4 地址
                return ip.toString();
            }
        }
    }
    return QString();
}
